# XGIMI MoGo 4 projector (model WK08K, device altai, MediaTek), Google TV / Android 14 (SDK 34),
# build UKNV.260612.001.15630599, France.
#
# Apply:   TV_HOST=<projector ip> tools/disable.sh examples/xgimi-mogo-4/debloat.txt
# Undo:    TV_HOST=<projector ip> tools/restore.sh examples/xgimi-mogo-4/debloat.txt com.google.android.apps.tv.launcherx
# Everything is DISABLED, not uninstalled. Comment out any line you want to keep.
#
# Tested for one session (a few hours) on 2026-10-24, including one reboot, not the several days
# CONTRIBUTING asks for. Every entry was applied and checked on the real unit; what has not been
# proven is that nothing surfaces after days of use. See README.md in this folder.
#
# Same board (altai) as examples/xgimi-mogo-3-pro, one firmware build older, so that list applies
# closely. Differences on this unit: com.nbcast.wirelessscreen (MagiCast) is replaced by
# com.xgimi.starmirror, com.xgimi.screensaver and com.google.android.videos are not present, and
# nothing was disabled from the factory (com.google.android.youtube.tvmusic ships enabled here).
#
# Stock launcher: com.google.android.apps.tv.launcherx (HOME priority 2), with the setup wizard's
# RecoveryActivity at priority 1, so setupwraith is listed below.
# setupwraith owned one saved Wi-Fi network, a phone hotspot, and NOT the network the projector was
# using: `dumpsys wifi` showed cname=android.uid.system:1000 on the entry with
# "Currently Connected: true". Checking which entry is connected before trusting disable.sh's
# skip message is worth it; FORCE_SETUPWRAITH=1 was used after that check, and ADB and Wi-Fi held.
# Only the unused hotspot entry was lost.
#
# Launcher notes (applied and verified on a real unit on 2026-10-24):
# - Install with HOME_KEY_SERVICE=1, and put this in config.xml or a theme's config.json
#   (config.json in this folder has them):
#     "live_tv_package": ""                    no tuner
#     "columns": 5
#     "settings_key_keycodes": [83]            the gear button sends KEYCODE_NOTIFICATION
#     "app_keys": ["KEYCODE_F4:com.google.android.youtube.tv",
#                  "KEYCODE_F9:com.netflix.ninja",
#                  "KEYCODE_F8:com.amazon.amazonvideo.livingroom"]
#     "stock_home_redirect": "com.google.android.apps.tv.launcherx"
# - THE STOCK LAUNCHER DOES NOT STAY DISABLED. launcherx re-enabled itself across the reboot and
#   again within minutes of being disabled during use (XGIMI's com.xgimi.xrmservice, as on the
#   MoGo 3 Pro). Do not re-disable it after every boot: stock_home_redirect is what holds the new
#   home screen. Measured: with HomeKeyService unbound, one press of Home landed on the stock
#   Google TV launcher. Disabling only its home activity
#   (`pm disable --user 0 com.google.android.apps.tv.launcherx/.home.HomeActivity`) is refused with
#   a SecurityException on this firmware, so package-level disable plus the redirect is the only route.
# - HOME_KEY_SERVICE costs volume-key auto-repeat on this firmware: holding volume up/down moves one
#   step instead of ramping, the same CAPABILITY_CAN_FILTER_KEY_EVENTS mechanism as
#   docs/devices/tcl-55p71b-g09-key-repeat.md (dumpsys accessibility shows capabilities=8). Holding a
#   D-pad direction still repeats normally; only the volume keys were affected. Unlike the sets in
#   that note, the helper is not optional here: dropping it gives the stock launcher back (above),
#   so the trade is the new launcher against the volume ramp, not buttons against the volume ramp.
#   The owner kept the helper.
# - HDMI 1 (the only port) opens through com.google.android.tv.inputplayer from the Inputs menu, so
#   no input_action is needed (unlike the Horizon S Pro).
# - Network ADB does not survive a reboot: Developer options offers only "Wireless debugging", and
#   turning that on also reopens 5555 for tools/tv.py. The stock adb binary is answered
#   "unauthorized"; tools/tv.py authenticates with its own key.
# - Screenshots from `screencap -p` start with a vendor log line; tools/tv.py already strips it.
#
# DO NOT DISABLE on this model (projector hardware, inputs, mirroring):
# com.xgimi.autokst                    # auto keystone correction
# com.xgimi.windowsystem               # keystone/window service
# com.xgimi.tof                        # ToF autofocus
# com.xgimi.misckey                    # remote keys, focus/keystone shortcuts
# com.xgimi.uiconfiguration            # global key receiver, power listener
# com.xgimi.xrmservice                 # global remote keys, picture/sound adaptation (re-enables the stock launcher, see above)
# com.xgimi.xgimiservice               # core XGIMI system service
# com.xgimi.autoinstall                # purpose unclear (PermissionRequestActivity only): kept
# com.xgimi.overseas.xgimiatvbootwizard  # first-boot wizard
# com.mediatek.tvinput                 # HDMI input service
# com.mediatek.tv.service              # TV service, Netflix key receiver
# com.google.android.tv.inputplayer    # HDMI passthrough player and input switcher
# com.xgimi.starmirror                 # XGIMI screen-mirroring receiver (ships as a user app here)
# com.dolby.android.audio.service      # Dolby audio

# Store demo, factory and test tools
fusion.android.tv.demo                        # RetailDisplay store demo
com.xgimi.atvwifiverify                       # factory Wi-Fi verification
com.xgimi.minitvfactory                       # factory menu, file transfer and burn-in (never launched)

# Telemetry and feedback
com.xgimi.bugreportsender                     # XGIMI bug report uploader
com.google.android.feedback                   # Google feedback
com.android.tv.feedbackconsent                # feedback / diagnostics consent prompt
com.mstar.android.tv.disclaimercustomization  # vendor disclaimer screen, first-run only

# Google ad, attribution and on-device personalisation services
com.android.adservices.api                    # Privacy Sandbox ad services (Topics, attribution)
com.android.ondevicepersonalization.services  # on-device ad personalisation
com.android.federatedcompute.services         # federated learning for the above
com.google.android.partnersetup               # partner / RLZ install-attribution pings

# Google TV setup wizard (claims HOME on Google TV 14; re-enable before a factory reset)
com.google.android.tungsten.setupwraith

# Google preloads
com.google.android.play.games                 # Play Games
com.google.android.youtube.tvmusic            # YouTube Music
com.google.android.marvin.talkback            # TalkBack (accessibility), off by choice

# Voice and phone remote (off by choice)
com.google.android.katniss                    # Google Assistant / Gemini voice search
com.google.android.tv.assistant               # assistant LED / hotword service
com.google.android.tv.remote.service          # Google TV phone-as-remote, not the Bluetooth remote

# XGIMI extras (off by choice)
com.xgimi.doubanfm                            # XGIMI music app, speaker-mode screen

# Preinstalled streaming apps (off by choice; they ship as user apps on this French unit)
com.disney.disneyplus                         # Disney+
com.orange.owtv.tv                            # Orange TV

# Kept by choice on this unit: com.netflix.ninja, com.google.android.youtube.tv,
# com.amazon.amazonvideo.livingroom, com.apple.atve.androidtv.appletv, com.canal.android.canal,
# fr.francetv.pluzz, fr.m6.m6replay, tv.arte.plus7, com.google.android.apps.mediashell (Chromecast),
# com.xgimi.ota.accessories (remote/speaker firmware), com.xgimi.gimiplayer (local player),
# com.google.android.apps.tv.dreamx (Backdrop screensaver). The projector's own firmware updater
# was left enabled.

# Disabled last, after the new launcher was confirmed as Home with
# `dumpsys activity activities | grep mFocusedApp`. It comes back on its own: see the header.
com.google.android.apps.tv.launcherx
